CFT Parameter Reference
All parameters available in the Yeedu CloudFormation Template, grouped by section as they appear in the CloudFormation console.
Parameters marked Required have no default and must be filled in before launching the stack. All other parameters have defaults that suit most deployments.
Section A — VPC Configuration
| Parameter | Default | Description |
|---|---|---|
aVpcId | Required | VPC ID where all Yeedu resources will be deployed. |
Section B — Public Subnets
Three public subnets are required — one per Availability Zone — for ALB multi-AZ placement. Subnet 1 also hosts the NAT Gateway.
| Parameter | Default | Description |
|---|---|---|
bPublicSubnet1Id | Required | First public subnet. Hosts the NAT Gateway and one ALB node. |
bPublicSubnet2Id | Required | Second public subnet. Must be in a different AZ from subnet 1. |
bPublicSubnet3Id | Required | Third public subnet. Must be in a different AZ from subnets 1 and 2. |
Section C — Private Subnets
| Parameter | Default | Description |
|---|---|---|
cCreatePrivateSubnets | true | Create new private subnets (true) or use existing ones (false). |
cPrivateSubnet1CIDR | 172.31.128.0/25 | CIDR for the first private subnet (128 IPs). Must not overlap existing subnets. |
cPrivateSubnet2CIDR | 172.31.128.128/25 | CIDR for the second private subnet (128 IPs). Must not overlap existing subnets. |
cAvailabilityZone1 | Required | AZ for the first private subnet (e.g., ap-south-1a). |
cAvailabilityZone2 | Required | AZ for the second private subnet (e.g., ap-south-1b). Must differ from AZ1. |
cExistingPrivateSubnet1Id | (blank) | If cCreatePrivateSubnets = false, ID of your first existing private subnet. |
cExistingPrivateSubnet2Id | (blank) | If cCreatePrivateSubnets = false, ID of your second existing private subnet. |
The default CIDRs (172.31.128.0/25 and 172.31.128.128/25) assume a 172.31.0.0/16 VPC. If your VPC uses a different range, update both CIDRs to avoid overlap.
Section D — EC2 Configuration
| Parameter | Default | Description |
|---|---|---|
dInstanceType | c6a.2xlarge | EC2 instance type for the main Yeedu server. Minimum 8 vCPU / 16 GB RAM recommended. |
Recommended instance types:
| Instance | vCPU | RAM | Use Case |
|---|---|---|---|
c6a.2xlarge | 8 | 16 GB | Default — dev / small production |
c6a.4xlarge | 16 | 32 GB | Medium production workloads |
c6a.8xlarge | 32 | 64 GB | Large production workloads |
m6a.4xlarge | 16 | 64 GB | Memory-intensive workloads |
Section E — SSL / HTTPS
| Parameter | Default | Description |
|---|---|---|
eUseSSL | true | Enable HTTPS on the ALB using an ACM certificate. |
eACMCertificateArn | (blank) | Full ARN of the ACM certificate. Required when eUseSSL = true. |
eCustomDnsName | (blank) | Custom domain for Yeedu (e.g., app.yeedu.example.com). After deployment, create a CNAME pointing this domain to the ALB DNS name. |
ALB listener ports based on eUseSSL:
| Mode | UI | REST API | Functions Proxy |
|---|---|---|---|
eUseSSL = true | https://<alb>:8012 → EC2 :8002 | https://<alb>:8080 → EC2 :8080 | https://<alb>:8081 → EC2 :8081 |
eUseSSL = false | http://<alb>:8002 → EC2 :8002 | http://<alb>:8080 → EC2 :8080 | http://<alb>:8081 → EC2 :8081 |
When eCustomDnsName is set and eUseSSL = true, Yeedu's internal hostnames are configured using the custom domain. If blank, the ALB's auto-generated DNS name is used.
Section F — RDS
| Parameter | Default | Allowed Values | Description |
|---|---|---|---|
fCreateRDS | true | true, false | Create a managed RDS PostgreSQL instance. Set to false if supplying your own external PostgreSQL. |
fRDSEngineVersion | 15.10 | Any 15.x | PostgreSQL engine version. Use the latest 15.x available in your region if 15.10 is unavailable. |
fRDSHighAvailability | false | true, false | Enable Multi-AZ for RDS. Recommended for production. |
fEnvironmentName | prod | dev, staging, prod | Environment label used as a suffix in all resource names (e.g., yeedu-prod-ec2-sg). |
To find the latest PostgreSQL 15.x version available in your region:
aws rds describe-db-engine-versions \
--engine postgres \
--query "DBEngineVersions[?starts_with(EngineVersion,'15')].EngineVersion" \
--output table
RDS instance specs (created by CFT):
| Property | Value |
|---|---|
| Instance class | db.t3.micro |
| Storage | 20 GB gp3, encrypted |
| Backup retention | 7 days |
| Multi-AZ | Controlled by fRDSHighAvailability |
| Publicly accessible | No |
| Deletion policy | Snapshot (final snapshot on stack delete) |
| max_connections | 5000 (via parameter group) |
Section G — S3 Bucket
| Parameter | Default | Description |
|---|---|---|
gCreateS3Bucket | true | Create a new S3 bucket for Yeedu data and artifacts. Set to false to use an existing bucket. |
gExistingS3BucketName | (blank) | Name of an existing S3 bucket. Required when gCreateS3Bucket = false. |
When gCreateS3Bucket = true, the CFT creates a bucket named <stack-name>-data with:
- All public access blocked
- Versioning enabled
- Server-side encryption (AES256)
DeletionPolicy: Retain— bucket is not deleted when the stack is deleted
When gCreateS3Bucket = false, provide your existing bucket name in gExistingS3BucketName. The Yeedu Lambda and EC2 instance will read/write under the yeedu/ and yeedu_libs/ prefixes in that bucket.
The existing bucket must be in the same region as the CloudFormation stack. The Lambda execution role and EC2 instance role are scoped to only the configured bucket — cross-region bucket access is not supported.
Section H — EC2 Machine
| Parameter | Default | Description |
|---|---|---|
hCreateEC2Machine | true | Create a new EC2 instance and register it with ALB target groups. Set to false to skip EC2 creation. |
hExistingEC2MachineID | (blank) | Existing EC2 instance ID to register in ALB target groups. Required when hCreateEC2Machine = false. |
Set hCreateEC2Machine = false when:
- Re-deploying infrastructure only — updating networking, SGs, or ALB config without reprovisioning the Yeedu server
- Registering a pre-existing EC2 — the instance was created outside the CFT
When hCreateEC2Machine = false, the hExistingEC2MachineID is registered directly into all three ALB target groups (UI, REST API, Functions Proxy).
Section I — Yeedu Version & Software Pull
| Parameter | Default | Description |
|---|---|---|
iYeeduVersion | v2.9.1 | Yeedu release version to deploy. Must exist in the yeedu-softwares S3 bucket under releases/<version>/. |
iPullYeeduSoftwares | true | If true, Lambda copies artifacts from S3 and EC2 loads + pushes Docker images to ECR on first boot. If false, both steps are skipped. |
Decision guide for iPullYeeduSoftwares:
| Scenario | Recommended Value |
|---|---|
| First-time deployment | true |
| Re-deployment, ECR images already populated | false |
Version upgrade to a new iYeeduVersion | true |
| Infrastructure-only change (SG, ALB update) | false |
If you set iPullYeeduSoftwares = false but ECR repositories are empty or the S3 artifacts are missing, yeedu-core-services.sh start will fail because Docker images won't be found. Always ensure ECR is populated before disabling the software pull.